﻿
namespace RIAExample.Web.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;
    using RIAExample.Web.CustomValidations;

    [MetadataTypeAttribute(typeof(Produto.ProdutoMetadata))]
    public partial class Produto
    {
        internal sealed class ProdutoMetadata
        {
            private ProdutoMetadata()
            {
            }

            [Display(Name = "Descrição", Description = "Descrição do produto", Order = 0)]
            [Required(ErrorMessage = "Campo Descrição é obrigatório")]
            public string Descricao { get; set; }

            [Display(Name = "Preço", Description = "Preço do produto", Order = 1)]
            [Required(ErrorMessage = "Campo Preço é obrigatório")]
            [CustomValidation(typeof(ValueGreaterThanZero), "Validate")]
            public decimal Preco { get; set; }

            [Display(AutoGenerateField = false)]
            public int ProdutoID { get; set; }

            [Include]
            [Display(AutoGenerateField = false)]
            public Supermercado Supermercado { get; set; }

            [Display(AutoGenerateField = false)]
            public int SupermercadoID { get; set; }
        }
    }

    // The MetadataTypeAttribute identifies SupermercadoMetadata as the class
    // that carries additional metadata for the Supermercado class.
    [MetadataTypeAttribute(typeof(Supermercado.SupermercadoMetadata))]
    public partial class Supermercado
    {

        // This class allows you to attach custom attributes to properties
        // of the Supermercado class.
        //
        // For example, the following marks the Xyz property as a
        // required property and specifies the format for valid values:
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class SupermercadoMetadata
        {

            // Metadata classes are not meant to be instantiated.
            private SupermercadoMetadata()
            {
            }

            public string Nome { get; set; }

            public EntityCollection<Produto> Produtoes { get; set; }

            public string Senha { get; set; }

            public int SupermercadoID { get; set; }
        }
    }
}
